import java.awt.*;
import java.awt.geom.*;


/**
* Beispiel fuer die Verwendung von GradientPaint (Farbverlaeufen)
*
* @author Frank Klawonn
* Letzte Aenderung 27.05.2005
*/
public class GradientPaintExample extends Frame
{

  /**
  * Konstruktor
  */
  public GradientPaintExample()
  {
    //Ermoeglicht das Schliessen des Fensters
    addWindowListener(new MyFinishWindow());
  }


  public void paint(Graphics g)
  {

    Graphics2D g2d = (Graphics2D) g;

    //Quadrat, das mit einem nicht wiederholten Farbverlauf gefuellt werden soll
    Rectangle2D.Double rect1 = new Rectangle2D.Double(50,50,300,300);

    //Die beiden Farben (Rot und Gruen) fuer den Farbverlauf
    Color c1 = new Color(1.0f,0.0f,0.0f);
    Color c2 = new Color(0.0f,1.0f,0.0f);

    //Der Farbverlauf von Rot nach Gruen verlaeuft parallel zur Diagonalen
    //im zu fuellenden Quadrat. Der Farbverlauf beginnt und endet nicht in den Ecken,
    //sondern innerhalb des Quadrates. Der Farbverlauf wird nicht wiederholt, so dass
    //der obere linke Teil des Quadrats Rot und der rechte untere Teil gruen gefarbet
    //wird.
    GradientPaint gradPaint1 = new GradientPaint(150,150,c1,250,250,c2,false);
    g2d.setPaint(gradPaint1);
    g2d.fill(rect1);


    //Quadrat, das mit einem wiederholten Farbverlauf gefuellt werden soll
    Rectangle2D.Double rect2 = new Rectangle2D.Double(400,50,300,300);

    //Bzgl. des neuen Quadrats wird der entsprechende Farbverlauf wie fuer das
    //erste Quadrat definiert mit dem einzigen Unterschied, dass der Farbverlauf
    //zyklisch wiederholt werden soll.
    GradientPaint gradPaint2 = new GradientPaint(500,150,c1,600,250,c2,true);
    g2d.setPaint(gradPaint2);
    g2d.fill(rect2);
  }

  public static void main(String[] argv)
  {

    GradientPaintExample f = new GradientPaintExample();
    f.setTitle("Farbbverlaeufe");
    f.setSize(800,500);
    f.setVisible(true);
  }

}

